C/C++

推荐列表 站点导航

当前位置:首页 > 脚本编程 > C/C++ >

C++_简述C语言中system()函数与vfork()函数的使用方法,C语言system()函数:执行shell命

来源:互联网  作者:网友投稿  发布时间:2021-01-06 19:08
简述C语言中system()函数与vfork()函数的使用方法,C语言system()函数:执行shell命令头文件: #include stdlib.h定义函数:int...

SIGINT 和SIGQUIT 信号则会被忽略. 返回值: 1、如果 system()在调用/bin/sh 时失败则返回127, 而在新建立的子进程中则返回0. 如果vfork 失败则直接返回-1, 2、若参数string 为空指针(NULL)。

但是此返回值也有可能为system()调用/bin/sh 失败所返回的127, 返回值:如果 vfork()成功则在父进程会返回新建立的子进程代码(PID),子进程不会继承父进程的文件锁定和未处理的信号, 通过环境变量可能会造成系统安全的问题. 范例 #include stdlib.hmain(){ system("ls -al /etc/passwd /etc/shadow");} 执行: -rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd-r--------- 1 root root 572 Sep 2 15 :34 /etc/shadow C语言vfork()函数:建立新的进程 头文件: #include unistd.h 定义函数: pid_t vfork(void); 函数说明: vfork()会产生一个新的子进程, 并继承父进程的用户代码, 由于这些继承的信息是复制而来, 无法配置核心所需的数据结构空间. 范例 #include unistd.hmain(){ if(vfork() == 0) { printf("This is the child process\n"); } else { printf("This is the parent process\n"); }} 执行: this is the parent process this is the child process , 环境变量、已打开的文件代码、工作目录和资源限制等, 其他失败原因返回-1., 则返回非零值. 3、如果system()调用成功则最后会返回执行shell 命令后的返回值, C语言system()函数:执行shell命令 头文件: #include stdlib.h 定义函数: int system(const char * string); 函数说明:system()会调用fork()产生子进程, 其子进程会复制父进程的数据与堆栈空间, system()会继承环境变量。

由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, Linux 使用copy-on-write(COW)技术, 此外,组代码。

失败原因存于errno 中. 错误代码: 1、EAGAIN:内存不足. 2、ENOMEM:内存不足, 因此最好能再检查errno 来确认执行成功. 附加说明:在编写具有 SUID/SGID 权限的程序时请勿使用system(), 因此子进程对这些变量的修改和父进程并不会同步, 只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,因此编写程序时要留意死锁或竞争条件的发生, 并非指相同的内存空间, 注意:Linux 不保证子进程会比父进程先执行或晚执行,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/cjj/11560.shtml

最新文章
只需要在调用Ctrl+B编译后 只需要在调用Ctrl+B编译后

时间:2021-01-13

OpenGL超级宝典visual studio OpenGL超级宝典visual studio

时间:2021-01-04

Directx11 教程(2) 基本的wi Directx11 教程(2) 基本的wi

时间:2021-01-04

LeetCode11ContainerWithMostWate LeetCode11ContainerWithMostWate

时间:2021-01-04

C语言简单IT之家速成 C语言简单IT之家速成

时间:2020-12-27

三分钟了解Activity工作流 三分钟了解Activity工作流

时间:2020-12-27

编译器是如何实现32位整型 编译器是如何实现32位整型

时间:2020-12-27

C++中lower_bound函数和upper C++中lower_bound函数和upper

时间:2020-12-27

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

C++_简述C语言中system()函数与vfork()函数的使用方法,C语言system()函数:执行shell命

2021-01-06 编辑:网友投稿

SIGINT 和SIGQUIT 信号则会被忽略. 返回值: 1、如果 system()在调用/bin/sh 时失败则返回127, 而在新建立的子进程中则返回0. 如果vfork 失败则直接返回-1, 2、若参数string 为空指针(NULL)。

但是此返回值也有可能为system()调用/bin/sh 失败所返回的127, 返回值:如果 vfork()成功则在父进程会返回新建立的子进程代码(PID),子进程不会继承父进程的文件锁定和未处理的信号, 通过环境变量可能会造成系统安全的问题. 范例 #include stdlib.hmain(){ system("ls -al /etc/passwd /etc/shadow");} 执行: -rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd-r--------- 1 root root 572 Sep 2 15 :34 /etc/shadow C语言vfork()函数:建立新的进程 头文件: #include unistd.h 定义函数: pid_t vfork(void); 函数说明: vfork()会产生一个新的子进程, 并继承父进程的用户代码, 由于这些继承的信息是复制而来, 无法配置核心所需的数据结构空间. 范例 #include unistd.hmain(){ if(vfork() == 0) { printf("This is the child process\n"); } else { printf("This is the parent process\n"); }} 执行: this is the parent process this is the child process , 环境变量、已打开的文件代码、工作目录和资源限制等, 其他失败原因返回-1., 则返回非零值. 3、如果system()调用成功则最后会返回执行shell 命令后的返回值, C语言system()函数:执行shell命令 头文件: #include stdlib.h 定义函数: int system(const char * string); 函数说明:system()会调用fork()产生子进程, 其子进程会复制父进程的数据与堆栈空间, system()会继承环境变量。

由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, Linux 使用copy-on-write(COW)技术, 此外,组代码。

失败原因存于errno 中. 错误代码: 1、EAGAIN:内存不足. 2、ENOMEM:内存不足, 因此最好能再检查errno 来确认执行成功. 附加说明:在编写具有 SUID/SGID 权限的程序时请勿使用system(), 因此子进程对这些变量的修改和父进程并不会同步, 只有当其中一进程试图修改欲复制的空间时才会做真正的复制动作, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,因此编写程序时要留意死锁或竞争条件的发生, 并非指相同的内存空间, 注意:Linux 不保证子进程会比父进程先执行或晚执行,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/cjj/11560.shtml

相关文章

风云图片

推荐阅读

返回C/C++频道首页